/* eslint-disable no-undef */
//封装ajax函数
//兼容post和get
//返回Promise对象
function ajax({baseUrl,url,method='GET',
    data={}//默认值
    ,headers={}}){
    //baseUrl基础地址 、url地址、 method请求方式 
    //data参数、 headers请求头、 callback回调函数
    return new Promise((resolve,reject)=>{
        let xhr = new XMLHttpRequest();
        let qrey="?"
        if(Object.keys(data).length){
            for(const key in data)qrey+=`${key}=${data[key]}&`
        }
        //设置请求头
        function setRequestHeader(){
        if(Object.keys(headers).length){
            for (const key in headers)xhr.setRequestHeader(key, headers[key])
        }}
        if(method.toUpperCase()==="GET"){
            xhr.open(method,baseUrl+url+qrey.slice(0,-1))
            setRequestHeader()
            xhr.send()
        }else{
            xhr.open(method,baseUrl+url) 
            setRequestHeader()
            xhr.send(JSON.stringify(data))
        }
        //监听
        xhr.addEventListener("readystatechange",()=>{
            if(xhr.readyState==4){
                if(xhr.status==200)resolve(JSON.parse(xhr.response))
                else reject(JSON.parse(xhr.response))
            }
        })
    })
}
export default ajax;